var moment = require('moment'); // require
import Toast from 'tdesign-miniprogram/toast/index';
const date = moment().startOf('day');
const timestamp = date.valueOf();
Page({
  data: {
    height:430,
    swiperList: [],
    current: null, //倒数第二张，因为最后一张是明天的
    autoplay: false,
    navigation: {
      type: 'none',
      showControls: false
    },
    duration: '500',
    loop: 'false',
    weeks: new Array("周日", "周一", "周二", "周三", "周四", "周五", "周六"),
    lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554,
      0x056a0, 0x09ad0, 0x055d2, 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0,
      0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566,
      0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550,
      0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0,
      0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263,
      0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0,
      0x195a6, 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5,
      0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, 0x0d954, 0x0d4a0,
      0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9,
      0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0,
      0x0d260, 0x0ea65, 0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520,
      0x0dd45, 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0
    ],
    chineseNumber: [
      "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "十二"
    ],
    index: 0, //当天的时间，加入左拉右拉的时候，加减调用方法
    Nongli: 0, //农历时间
    week: 0, //星期转大写
    lunarDate: '',
    day: null,
    numIndex: 0, //日期上的数字轮播图index
    flag: null,
    from: null,
    to: null,
    time: new Date(new Date().toLocaleDateString()).getTime() + 86400000- new Date().getTime() ,
  },
  showText() {
    Toast({
      context: this,
      selector: '#t-toast',
      message: '还没更新，请不要着急',
    });
  },
  toDeatail(e){
if(e.currentTarget.dataset.item[0].id==undefined){
 this.showText()
  return 
  }
  else{
    let item =JSON.stringify(e.currentTarget.dataset.item) 

    wx.navigateTo({
      url: '../deatail/detail?item='+item,
    })
  }


  },
  onChange(e) {
    const {
      current,
      source
    } = e.detail;
    if(this.data.flag!=null){
      if (this.data.numIndex > this.data.swiperList.length - 1 - current) {
        this.data.flag = true
        // console.log("向右滑动了");
        this.data.numIndex = this.data.swiperList.length - 1 - current
      } else {
        // console.log("向左滑动了");
        this.data.flag = false
        this.data.numIndex = this.data.swiperList.length - 1 - current
      }
      this.changeTime(this.data.swiperList.length - 1 - current, this.data.flag)
    }
   
  },

  changeTime: function (index, flag) {
    let a = (new Date().getTime() - (index * 86400000));
    // console.log(a);//时间戳
    // a = new Date(a)// 转变时间
    let b=new Date(a).getDay()+1
    if(b==7){
      b=0
    }
    this.setData({
      week: this.data.weeks[b],
    });
    let newArr
 
    if (flag) {
      newArr = (new Date(a + 86400000)).getDate()
    } else {
      newArr = (new Date(a + 86400000)).getDate()
    }
    this.setData({
      day: newArr>=10?newArr:'0'+newArr
    })
    this.getLunarDate(new Date(a))
  },

  getLunarDate: function (curDate) {

    var self = this;
    var yearCyl, monCyl, dayCyl;
    var leapMonth = 0;
    var date = new Date('1900/1/31');
    // 求出和1900年1月31日相差的天数
    var offset = parseInt((curDate.getTime() - date.getTime()) / 86400000);
    dayCyl = offset + 40;
    monCyl = 14;
    // 用offset减去每农历年的天数
    // 计算当天是农历第几天
    // i最终结果是农历的年份
    // offset是当年的第几天
    var iYear, daysOfYear = 0;
    for (iYear = 1900; iYear < 2050 && offset > 0; iYear++) {
      daysOfYear = self.yearDays(iYear);
      offset -= daysOfYear;
      monCyl += 12;
    }
    if (offset < 0) {
      offset += daysOfYear;
      iYear--;
      monCyl -= 12;
    }
    yearCyl = iYear - 1864;
    leapMonth = self.leapMonth(iYear); // 闰哪个月,1-12
    var leap = false; // 默认值
    // 用当年的天数offset,逐个减去每月（农历）的天数，求出当天是本月的第几天
    var iMonth, daysOfMonth = 0;
    for (iMonth = 1; iMonth < 13 && offset > 0; iMonth++) {
      // 闰月
      if (leapMonth > 0 && iMonth == (leapMonth + 1) && !leap) {
        --iMonth;
        leap = true;
        daysOfMonth = self.leapDays(iYear);
      } else
        daysOfMonth = self.monthDays(iYear, iMonth);

      offset -= daysOfMonth;
      // 解除闰月
      if (leap && iMonth == (leapMonth + 1))
        leap = false;
      if (!leap)
        monCyl++;
    }
    // offset为0时，并且刚才计算的月份是闰月，要校正
    if (offset == 0 && leapMonth > 0 && iMonth == leapMonth + 1) {
      if (leap) {
        leap = false;
      } else {
        leap = true;
        --iMonth;
        --monCyl;
      }
    }
    // offset小于0时，也要校正
    if (offset < 0) {
      offset += daysOfMonth;
      --iMonth;
      --monCyl;
    }
    var newday = self.getChinaDayString(offset + 1);
    var newmonth = self.data.chineseNumber[iMonth - 1];
    self.setData({
      lunarDate: newmonth + '月' + newday
    })
    //把日期整合成一个字符串
    var nongli = newmonth + '月' + newday;
    // var nongli=iYear+'年'+newmonth + '月' + newday;
    //把nongli赋值给date里的Nongli,才能在html中使用
    this.setData({
      Nongli: nongli
    })
  },

  //***上面的方法调用下面的方法***

  yearDays: function (y) {
    var self = this;
    var i, sum = 348;
    for (i = 0x8000; i > 0x8; i >>= 1) {
      if ((self.data.lunarInfo[y - 1900] & i) != 0)
        sum += 1;
    }
    return (sum + self.leapDays(y));
  },
  leapDays: function (y) {
    var self = this;
    if (self.leapMonth(y) != 0) {
      if ((self.data.lunarInfo[y - 1900] & 0x10000) != 0)
        return 30;
      else
        return 29;
    } else
      return 0;
  },
  leapMonth: function (y) {
    var self = this;
    return self.data.lunarInfo[y - 1900] & 0xf;
  },
  monthDays: function (y, m) {
    if ((this.data.lunarInfo[y - 1900] & (0x10000 >> m)) == 0)
      return 29;
    else
      return 30;
  },
  getChinaDayString: function (day) {
    var self = this;
    var chineseTen = ["初", "十", "廿", "卅"];
    var n = day % 10 == 0 ? 9 : day % 10 - 1;
    if (day > 30)
      return "";
    if (day == 10)
      return "初十";
    else
      return chineseTen[parseInt(day / 10)] + self.data.chineseNumber[n];
  },
  currTimeFormate() {
    var date = new Date(); // 当前日期时间
    var year = date.getFullYear(); // 年份
    var month = ('0' + (date.getMonth() + 1)).slice(-2); // 月份+1
    var day = ('0' + date.getDate()).slice(-2); // 日
    var hour = ('0' + date.getHours()).slice(-2); // 小时
    var minute = ('0' + date.getMinutes()).slice(-2); // 分钟
    var second = ('0' + date.getSeconds()).slice(-2); // 秒数
    var millisecond = ('000' + date.getMilliseconds()).slice(-3); // 毫秒数0-999
    this.setData({
      from:  this.getDay(-7),
      to: year + month + day
    })
  },

   getDay(day){
 
    　　var today = new Date();
     
    　　var targetday_milliseconds=today.getTime() + 1000*60*60*24*day;
     
    　　today.setTime(targetday_milliseconds); //注意，这行是关键代码
     
    　　var tYear = today.getFullYear();
     
    　　var tMonth = today.getMonth();
     
    　　var tDate = today.getDate();
     
    　　tMonth = this.doHandleMonth(tMonth + 1);
     
    　　tDate = this.doHandleMonth(tDate);
     
    　　return tYear+tMonth+tDate;
     
    },
    doHandleMonth(month){
 
      　　var m = month;
       
      　　if(month.toString().length == 1){
       
      　　　　m = "0" + month;
       
      　　}
       
      　　return m;
       
    },      
getMonth(){
  let month =new Date
  month=month.getMonth()+1
  month = month.toString().length==1? '0'+month.toString():month
  return month
},
getDate(){
  let date =new Date
  date=date.getDate()
  date = date.toString().length==1? '0'+date.toString():date
  return date+1
},
tomorrowDate(){
  var today = new Date();
  var tomorrow = new Date(today.getTime() + 24 * 60 * 60 * 1000).getDate();
return tomorrow>10?tomorrow:'0'+tomorrow
},
tomorrowMonth(){
  var today = new Date();
  var tomorrow = new Date(today.getTime() + 24 * 60 * 60 * 1000).getMonth() + 1;
return tomorrow>=10?tomorrow:'0'+tomorrow
},

  getList(from, to) {
    // console.log(from, to);
    wx.showLoading({
      title: '加载中',
    })
    wx.request({
      url: 'https://apis.netstart.cn/daodu/lessons',
      data: {
        from: from,
        to: to
      },
      success: (res) => {
        // console.log(res);tomorrowDate
        res.data.push({month:this.tomorrowMonth(),
        date:this.tomorrowDate()}
        )
        this.setData({
          swiperList: res.data,
        })
    
        this.setData({
          current: (this.data.swiperList.length - 2), //倒数第二张，因为最后一张是明天的
          day: [new Date().getDate(), ],
        })
        // console.log(this.data.swiperList);
      },complete:()=>{
        wx.hideLoading()
      }
    })
  },


  /**
   * 生命周期函数--监听页面加载
   */

  onLoad: function (options) {
    this.getDay(7)
    this.currTimeFormate()
    //页面加载就调用获取农历的方法
    this.getList(this.data.from, this.data.to)
    this.getLunarDate(new Date());
    this.setData({
      week: this.data.weeks[new Date().getDay()], 
    })
    this.setData({
      flag:true
    })
  }
  
})
